昨天我們完成了point簡單的read 跟route model controll等
今天我們在進入評分前有一件很重要的事情要先做
也就是說point表單
比如說roni 對 amdin使用者的化學技能評分前
我們需要先判斷是否有評分過!?
如果有評分過我們的api要改成patch也就是更新分數
如果沒有評分過! 那我們要新增一個point的紀錄表來記錄我們的評分
這些是非常重要喔
那要如何判斷呢
user_id(技能擁有者)
judge_user_id(評分者ID)
skill_id(技能ID)
也就是說我們要茶道第一個是技能擁有者是誰?然後技能是哪種?還有現在評分的人是誰?
這件事情在做對應是非常重要的一件事喔!
新手可能會被這這種邏輯搞到頭昏眼花![]()
在前端views/point/index.blade.php中
<head>
  <!-- Scripts -->
  <script src="{{ asset('js/app.js') }}" defer></script>
  <script src="https://code.jquery.com/jquery-3.6.0.min.js"> </script>
  <!-- Styles -->
  <link href="{{ asset('css/app.css') }}" rel="stylesheet">
</head>
<body>
  <div>
    <table class="table table-bordered">
      <thead>
        <tr>
          <th>ID</th>
          <th>標題</th>
          <th>使用者ID</th>
          <th>技能評分</th>
        </tr>
      </thead>
      <tbody>
        @foreach($skills as $skill )
        <tr>
          <td>{{$skill->id}}</td>
          <td>{{$skill->title}}</td>
          <td>{{$skill->user_id}}</td>
          <td><button type="button" class="btn btn-primary" onclick="myFunction('{{$skill->id}}','{{$skill->user_id}}')">進入評分</button></td>
        </tr>
        @endforeach
      </tbody>
    </table>
  </div>
</body>
<script>
  function myFunction(skill_id, user_id) {
    var data = {
      skill_id,
      user_id
    }
    $.ajax({
        method: "POST",
        url: "/points",
        dataType: 'json',
        data
      })
      .done(function(msg) {
        console.log(msg)
      });
  }
</script>
我們要把skill_id跟持有者id傳到後端在做表單控制
在button function中我們可以把兩個參數帶入
然後透過ajax把它送到後端
public function store(Request $request)
    {
        //
        $data  = $request->all();
        $user = Auth::user();
        $result = Point::query()
            ->where('user_id', '==', $data['user_id'])
            ->where('judge_user_id', '==', $user->id)
            ->where('skill_id', '==', $data['skill_id'])->get()->first();
        if (empty($result)) {
            $newpointdata = new Point;
            $newpointdata->user_id = $data['user_id'];
            $newpointdata->judge_user_id = $user->id;
            $newpointdata->skill_id = $data['skill_id'];
            $newpoint = $newpointdata->save();
            dd($newpoint);
            return $newpoint;
        }
        // return empty($result);
    }
這邊要做的事情有兩點
第一點我們要先查找是否已經有評分過了(也就是說我們要看評分表在不在)
如果不在我們就要進到if empty的環節來新增point表
驗證結果

確認api有成功

確認評分表有新增成功